/**
 * vuex的核心模块
 */
import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
//状态对象
const state = {
  count: 0
}
//包含多个更新state函数的对象
const mutations = {
  // 增加
  INCREMENT(state) {
    state.count++
  },
  // 减少
  DECREMENT(state) {
    state.count--
  }
}
// 包含多个对应时间回调函数的对象
const actions = {
  increment({commit}) {
    // 提交增加的mutation
    commit('INCREMENT')
  },
  decrement({commit}) {
    // 提交减少的mutation
    commit('DECREMENT')
  },
  incrementIfOdd({commit, state}) {
    if (state.count % 2 === 1) {
      commit('INCREMENT')
    }
  },
  incrementAsync({commit}) {
    setTimeout(() => {
      commit('INCREMENT')
    }, 500)
  }

}
// getters
const getters = {
  evenOrOdd(state) {
    return state.count % 2 === 0 ? '偶数' : '奇数'
  }
}
export default new Vuex.Store({
  state,//状态对象
  mutations,//包含多个更新state函数的对象
  actions,// 包含多个对应时间回调函数的对象
  getters// 包含多个getter计算属性函数的对象
})
